package medium

/*
时间复杂度:O(N)
空间复杂度:O(N)

0 0 1 1 1
*/

func numRabbits(answers []int) int {
	hash := make(map[int]int)
	count := 0
	for _, v := range answers {
		if _, ok := hash[v]; !ok {
			hash[v]++
			count += v + 1
		} else {
			// 例如三只兔子回复: 1 1 1, 回复1表示至少有2只兔子,但是现在有三只,说明其中一只不是与另外两只同一组,需要再添加2只兔子
			if hash[v] == v+1 {
				hash[v] = 0
				count += v + 1
			}
			hash[v]++
		}
	}
	return count
}